﻿using SinBiota.Model.Entities;

namespace SinBiota.Model.Business.AuthenticationServices.Interfaces
{
    public enum CRUDAction
    {
        Create, Retrieve, Update, Delete
    }

    public interface IPermissionServices
    {

        // Admin:
        bool IsAdmin(string username);
        bool CanEditUser(string username, User user);
        bool CanDisplayUserDetails(string username, User user);
        bool CanEditOccurrence(string username, Occurrence occurrence);
        bool CanEditOccurrence(User user, Occurrence occurrence);
        bool CanIncludeOccurrence(string username, Project project);
        bool CanAddProjectMember(int projectId, string username);
        bool CanAddProjectMember(Project project, User user);
        bool CanAddProjectCoordinator(Project project, User user);
        bool CanCopyOccurrence(string username, Occurrence occurrence);
        bool CanDeleteOccurrence(string username, Occurrence occurrence);
        bool CanManageProject(string username, int projectId);
        bool CanViewUserList(string username);
        bool CanCreateUser(string username);
        bool CanEditProject(string username, Project project);
        bool CanAddTaxonChildren(string username, Taxon taxon);
    }
}
